package main

import "fmt"

// 	"rsc.io/quote"

func mainforCIRCLE() {
	i := 1
	for {
		fmt.Println(i)
		i++
		if i == 10 {
			break
		}
	}
	fmt.Println("")
	j := 1
	for j <= 10 {
		fmt.Println(j)
		j++
	}
	fmt.Println("")
	/*
		for语句后面的三个构成部分不能加括号，会报错
	*/
	for i := 1; i <= 10; i++ {
		fmt.Println(i)
	}
	/**

	  break 一般用来跳出当前所在的循环， 但是我们有业务场景，需要使用到 跳出最外层循环怎么办？break label 跳出循环不再执行for循环里的代码。

	  label一般用于跳出多层循环

	  break标签只能用于for循环，不能和switch使用，在其他语言里switch与break是搭档


	  continue label 这个功能和 break 优点类似，区别在于  break 是强制终止， continue 是继续循环下一个迭代。

	*/
label:
	for i := 1; i <= 10; i++ {
		for j := 1; j <= 5; j++ {
			if i == 8 && j == 4 {
				break label
			}
			fmt.Print("+")
		}
		fmt.Print("\n")
	}
	/*

	   goto 可以无条件的跳转执行的位置，但是不能跨函数，需要配合标签使用。

	   goto 标签放上面，下面都可以的.
	*/
	fmt.Println(1)
	if i := 1; i == 1 {
		goto four
	}
	fmt.Println(2)
	fmt.Println(3)
four:
	fmt.Println(4)

}
